home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / nrpas13.arc / GASDEV.PAS < prev    next >
Pascal/Delphi Source File  |  1991-05-01  |  602b  |  26 lines

  1. FUNCTION gasdev(VAR idum: integer): real;
  2. (* Programs using GASDEV must declare the variables
  3. VAR
  4.    gliset: integer;
  5.    glgset: real;
  6. in the main routine and must intialize gliset to
  7.    gliset := 0;   *)
  8. VAR
  9.    fac,r,v1,v2: real;
  10. BEGIN
  11.    IF  (gliset = 0)  THEN BEGIN
  12.       REPEAT
  13.          v1 := 2.0*ran3(idum)-1.0;
  14.          v2 := 2.0*ran3(idum)-1.0;
  15.          r := sqr(v1)+sqr(v2);
  16.       UNTIL (r < 1.0);
  17.       fac := sqrt(-2.0*ln(r)/r);
  18.       glgset := v1*fac;
  19.       gasdev := v2*fac;
  20.       gliset := 1
  21.    END ELSE BEGIN
  22.       gasdev := glgset;
  23.       gliset := 0
  24.    END
  25. END;
  26.